package vistas;

import java.util.Observable;
import java.util.Observer;

import objetos.ObjetoMovil;
import ar.uba.fi.algo3.titiritero.ControladorJuego;
import ar.uba.fi.algo3.titiritero.vista.Imagen;

/*
 * Define las caracter�sticas b�sicas de las vistas de los diferentes objetos m�viles. 
 */
public abstract class VistaObjetoMovil extends Imagen implements Observer {
	private ObjetoMovil objeto;
	private ControladorJuego controlador;

	public VistaObjetoMovil(ObjetoMovil objeto, ControladorJuego controlador) {
		this.objeto = objeto;
		objeto.addObserver(this);
		this.setPosicionable(objeto);
		this.controlador = controlador;
		this.setearImagen();
	}

	@Override
	public void update(Observable objeto, Object args) {
		if (this.objeto.estaDestruido()) {
			this.removerVistaDeControlador();
		} else {
			this.setearImagen();
		}
	}

	public void removerVistaDeControlador() {
		controlador.removerDibujable(this);
	}

	/*
	 * Setea la imagen correspondiente, dependiendo el sentido de movimiento del
	 * objeto
	 */
	public abstract void setearImagen();

	public ObjetoMovil getObjeto() {
		return this.objeto;
	}

	public ControladorJuego getControlador() {
		return this.controlador;
	}

}